Grid computing is a distributed computing model that allows applications to perform higher throughput computing by utilizing shared resources that may be available at a variety of networked computers. In Grid and similar environments, applications that require access to resources usually need to specify the type of the resource that they need, the quantity the resource that they need, and possibly the quality of such resources. For example, in order to execute, an application may require a certain number of ports with a certain bandwidth, a certain amount of memory, a certain amount of disk space, a certain number of interfaces of certain type, and so forth. The allocation of the shared resources is generally managed by some type of an operating system function that controls who may claim what resource at what time. Examples of policies that are used to allocate resources include scheduling (reservation for a certain time duration, e.g., reservation of ports for a voice conference that has been scheduled for a particular time), time slicing (often used to access CPU power with computer operating systems), or run-to-completion (for example, print jobs in the case of print servers).
The amount of resources requested by an application is usually based on an estimation determined by the application designer. Consequently, an amount of resources requested by the application may be different from what is really needed. In the case of reserving a certain amount of resource, if more resources are reserved than are actually needed, resources remain idle while applications that would be able to use them are delayed. As an analogy, one may think of the example of a voice conference having reserved too many ports, while other conference requests cannot be served due to lack of the ports.
In the case of run-to-completion environments, if a request for a resource is made for insufficient duration, the resource may not be released as scheduled because the task takes longer than the requested duration. In an alternative scenario, where the request had been for insufficient resources or for insufficient duration, an application may terminate abnormally.